// https://juejin.cn/post/6904443997788307463?searchId=202405130953322BFC501531469CAB2448#heading-0


compose

函数compose就是将函数倒序组合，所以也就是倒序的pipeline


const func1 = (num) => {
    return num * 2;
  }
  
  const func2 = (num) => {
    return num + 10;
  }
  
  const func3 = (num) => { 
    return num - 3;
  } 
  
  const arr = [func1, func2, func3];
  
  const compose = (num) => {
    // 我们只要反向 reduce 即可
    const res = arr.reduceRight((tot, func) => {
      return func(tot);
    }, num)
    return res;
  }
  
  console.log(compose(5));

  koa 中间件 compose
很多面试讲到koa洋葱模型的时候就会进一步讲到compose，但是我觉得koa的compose并非是我们上面讲到的compose，koa的compose是直接将一个函数作为参数传给另一个函数，而不是直接而将返回值传递给下一个函数，koa的compose的实现方式需要递归，后面我会在koa系列里面再讲如何实现

作者：用户4415482076985
链接：https://juejin.cn/post/7368701816442093619
来源：稀土掘金
著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
  
